package test06.stream.demo01;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * @author ZQX
 * @date 2025-04-07
 */
public class MainTest {
    public static void main(String[] args) {
        // 第一：定义数据源 （集合、数组）
        List<Integer> list = Arrays.asList(1, 4, 3, 2, 5);

        // 第二：把数据源转换为 Stream 对象 - 流对象
        Stream<Integer> stream = list.stream();

        // 第三：使用流对象的 API 方法，实现相关的操作 - 函数式接口 - Lambda表达式 - 方法引用
        // 流对象的 API 方法主要划分为两类：延迟方法、终结方法
        // 语法：流对象.延迟方法1().延迟方法2()...延迟方法N().终结方法()

        // Consumer 接口 - void accept(T t);
        // Predicate 接口 - boolean test(T t);
        stream.sorted((o1, o2) -> o2 - o1)
                .filter((t) ->t > 3)
                .forEach(System.out::println);

        // 错误：当流执行了终结方法后，流对象将关闭，再也不能使用！
        // stream.forEach(System.out::println);
    }
}
